package com.bdqn.spark.chapter05

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

object Spark01_RDD_Memory_Par {
  def main(args: Array[String]): Unit = {
    // 获取Spark程序的运行环境
    val conf: SparkConf = new SparkConf()
      .setMaster("local[*]") // * 代表统配，表示计算机的核数
      .setAppName("RDD-Memory")
    // conf.set("spark.default.parallelism", "4")
    val sc: SparkContext = new SparkContext(conf)

    val source: List[Int] = List(1, 2, 3, 4)
    //    val sourceRDD: RDD[Int] = sc.makeRDD(source)
    // 表示数据分成 2 个分区
    // 分区的数量：由 numSlices 参数确定

    // 默认情况下：分区的数量由以下参数决定
    // scheduler.conf.getInt("spark.default.parallelism", totalCores)
    // spark.default.parallelism ：配置参数
    // totalCores：当前环境计算机的CPU的核数
    // val sourceRDD: RDD[Int] = sc.makeRDD(source,3)
    val sourceRDD: RDD[Int] = sc.makeRDD(source)

    // 默认情况下：分了 12 个分区
    sourceRDD.saveAsTextFile("output")

    sc.stop()
  }
}
